The invention relates generally to methods and systems for allocating resources for performing call-related tasks and relates more particularly to allocating resources in a network environment in which there is redundant capability in implementing the call-related tasks.
There are a number of alternative architectures for supporting call capability for telephony devices of a local area network (LAN), such as telephones and/or telephony-enabled computers in a corporate environment. A private branch exchange (PBX) may be used to support calls to and from telephony devices that are on the premises of the owner of the PBX. Traditional PBXs provide all of the call processing for the supported telephony devices. This call processing includes supporting call-related features, such as call forwarding and voice messaging, in addition to the required routing of incoming and outgoing calls.
As an alternative to the centralized architecture, distributed call processing allows at least some of the call-related features to be implemented at the telephony devices, but typically also includes a device (a xe2x80x9ccentrally accessed unitxe2x80x9d) that is utilized by all of the telephony devices. For example, personal computers running telephony over local area network (ToL) clients can handle call-related features such as call forwarding, while a gatekeeper is used to enable features and to perform limited management functions, such as translating addresses, or feature services. PBXs may also be adapted to provide distributed call processing capability.
Thus, an advantage of distributed call processing is that the call-related tasks can be performed at the telephony devices. This frees the centrally accessed unit (e.g., a gatekeeper) of the system to perform the processing which can only be implemented at the centrally accessed unit. The gatekeeper or comparable unit may be considered to be a universal central processing unit (CPU), while the telephony devices may be considered to be edge CPUs. By dedicating the universal CPU to tasks that must be performed by the universal CPU, the delays that are imposed by operations within the universal CPU can be controlled.
Common programming languages that are used at the centrally accessed unit in a distributed call processing environment include C and C++. The programming language may be different at the telephony devices. Computers running ToL clients often use the JAVA(copyright) programming language (JAVA is a registered trademark of Sun Microsystems). With regard to the call-related features, the JAVA language is often less efficient than C or C++. Consequently, simple call processing tasks performed at a personal computer of a user may consume a significant percentage of the processing resources of the computer. Moreover, delays will be introduced as a result of the processing demands associated with performing a call-related task (e.g., call forwarding). The delays will be greater for computers without a high level of power. One solution is to equip each telephony device with a CPU that may be unnecessarily powerful for other software applications, but which is necessary to efficiently handle all of the call-related task processing that is to be performed by the telephony devices. The concern with this solution is that it imposes a significant expense upon a corporation or other entity that maintains a number of such telephony devices.
A partial solution is to assign implementation of specific call-related features to the centrally accessed unit, even though the features could be implemented at the device level. As one example, voicemail capability may be implemented using a server connected to a gatekeeper, rather than providing ToL client voicemail capability. The benefits of this partial solution will be greater under certain operating conditions than under others. In fact, the effects may be negative under conditions that may be related to current levels of call traffic and/or current demand for a particular call-related feature that is implemented at the centrally accessed level when it could be implemented at the device level.
What is needed is a method and system for providing distributed call processing capability without unnecessarily sacrificing system performance under certain operating conditions.
A method and a system utilize adaptive distributed call processing to achieve high system performance over a wide range of operating conditions. The system includes a centrally accessed unit that at least partially supports call capability for a number of telephony devices. The method includes enabling the centrally accessed unit to implement specific call-related features and enabling the telephony devices to implement the same features, so that there is a redundant capability. A task-allocation scheme is established to allow requests for the features to be responded to on the basis of current resource capability. For each request for implementation of a specific call-related feature for which there is redundant capability, there is an adaptive assignment that is at least partially based upon current availability of processing resources within at least one of the centrally accessed unit and the particular telephony device that is associated with the request.
In the preferred embodiment, the telephony devices are personal computers running ToL client software. The centrally accessed unit may be a gatekeeper or another device having corresponding capabilities. Also in the preferred embodiment, the determination of the current availability of processing resources involves anticipating the delays associated with executing the requested call-related feature at the centrally processing unit. If the anticipated delay is below a predetermined delay threshold, the implementation of the requested feature is assigned to the centrally accessed unit. On the other hand, if the anticipated delay is greater than the predetermined delay threshold, the telephony device associated with the call is assigned the task of implementing the requested feature. The predetermined delay threshold may be based upon the anticipated delay at the telephony device if the telephony device is assigned to implementing the requested feature. In an alternative embodiment, rather than selecting a fixed delay threshold, the assignment is based upon determining and comparing current availabilities of processing resources at the centrally accessed unit and the telephony device.
The anticipated delays at the centrally accessed unit will depend upon the available processing power. In accordance with the task-allocation scheme, the centrally accessed unit may be assigned to performing each call-related task for which redundant capability is available, until a predetermined threshold of processing power is being accessed as a result of previous requests. Once the predetermined threshold has been reached, the subsequent requests for the call-related features are assigned to the telephony devices. Assignment to the centrally accessed unit does not return until changes in traffic or other circumstances allow the available processing power to return to a level below the predetermined threshold.
In another embodiment, the telephony devices are telephones and the centrally accessed unit is a PBX or similar switching capability. In this embodiment, the telephones must be configured to enable implementation of the specific call-related features independently of the PBX. For example, the telephones may be feature phones that are configured to enable call forwarding.
In another embodiment, the centrally accessed unit is a server dedicated to a particular call-related feature, and the telephony devices are telephones. Again, the telephones must be able to provide the necessary digital signal processing to implement modern call-related features. In one application of this embodiment, the server is dedicated to providing voicemail capability, but the individual telephones provide redundant capability for voicemail manipulation (e.g., volume control). The requests for the voicemail capability are assigned to the server until a threshold level has been reached that indicates that the anticipated delays associated with leaving or manipulating voicemail messages at the server exceed anticipated delays associated with leaving or manipulating voicemail messages at the individual telephony devices.
The dynamic and adaptive shifting of the load between the centrally accessed unit (central CPU) and the telephony devices (edge CPUS) allows a system to take full advantage of the capabilities of the centrally accessed unit under low load and normal load operating conditions, but does not introduce undue delays during high load conditions. Load balancing may be configured to optimize the execution location of xe2x80x9cmoveablexe2x80x9d features between the centrally accessed unit and the telephony devices.